package pe.com.bbva.modpre.negocio;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

import org.drools.RuleBase;

import pe.com.bbva.modpre.dominio.AreaCentral;
import pe.com.bbva.modpre.dominio.Cliente;
import pe.com.bbva.modpre.dominio.ClienteGeneral;
import pe.com.bbva.modpre.dominio.FacturacionMasivaCarga;
import pe.com.bbva.modpre.dominio.Finanza;
import pe.com.bbva.modpre.dominio.MedioPago;
import pe.com.bbva.modpre.dominio.Operacion;
import pe.com.bbva.modpre.dominio.RiesgoMotor;
import pe.com.bbva.modpre.dominio.Segmento;
import pe.com.bbva.modpre.dominio.Sistema;
import pe.com.bbva.modpre.dominio.TipoBanca;
import pe.com.bbva.modpre.dominio.drools.Motor;

public interface CalculoService extends ConfiguracionService,Serializable{

	Motor calcularVinculacionCliente(Sistema sistema, AreaCentral areaCentral, RiesgoMotor riesgoMotor, Segmento segmento,Finanza finanza,RuleBase ruleBase);
	
	Motor calcularTeaBEC(Cliente cliente, Operacion operacion, AreaCentral areaCentral, Finanza finanza, MedioPago medioPago,
			RiesgoMotor riesgoMotor, Sistema sistema, TipoBanca tipoBanca, Segmento segmento,RuleBase ruleBase);
	Motor calcularTeaRarBEC(Cliente cliente, Operacion operacion, AreaCentral areaCentral, Finanza finanza, MedioPago medioPago,
			RiesgoMotor riesgoMotor, Sistema sistema, TipoBanca tipoBanca, Segmento segmento, BigDecimal rar,RuleBase ruleBase);
	Motor calcularRarTeaBEC(Cliente cliente, Operacion operacion, AreaCentral areaCentral, Finanza finanza, MedioPago medioPago,
			RiesgoMotor riesgoMotor, Sistema sistema, TipoBanca tipoBanca, Segmento segmento, BigDecimal tea,RuleBase ruleBase);
	
	Motor calcularTeaHipotecario(Cliente cliente, Operacion operacion, AreaCentral areaCentral, Finanza finanza, MedioPago medioPago,
			RiesgoMotor riesgoMotor, Sistema sistema, String ruc, BigDecimal ingreso, TipoBanca tipoBanca,RuleBase ruleBase);
	Motor calcularTeaRarHipotecario(Cliente cliente, Operacion operacion, AreaCentral areaCentral, Finanza finanza, MedioPago medioPago,
			RiesgoMotor riesgoMotor, Sistema sistema, String ruc, BigDecimal ingreso, TipoBanca tipoBanca, BigDecimal rar,RuleBase ruleBase);
	Motor calcularRarTeaHipotecario(Cliente cliente, Operacion operacion, AreaCentral areaCentral, Finanza finanza, MedioPago medioPago,
			RiesgoMotor riesgoMotor, Sistema sistema, String ruc, BigDecimal ingreso, TipoBanca tipoBanca, BigDecimal tea,RuleBase ruleBase);
	
	Motor calcularTeaConsumo(Cliente cliente, Operacion operacion, AreaCentral areaCentral, Finanza finanza, MedioPago medioPago,
			RiesgoMotor riesgoMotor, Sistema sistema, String ruc, BigDecimal ingreso, TipoBanca tipoBanca,RuleBase ruleBase);
	Motor calcularTeaRarConsumo(Cliente cliente, Operacion operacion, AreaCentral areaCentral, Finanza finanza, MedioPago medioPago,
			RiesgoMotor riesgoMotor, Sistema sistema, String ruc, BigDecimal ingreso, TipoBanca tipoBanca, BigDecimal rar,RuleBase ruleBase);
	Motor calcularRarTeaConsumo(Cliente cliente, Operacion operacion, AreaCentral areaCentral, Finanza finanza, MedioPago medioPago,
			RiesgoMotor riesgoMotor, Sistema sistema, String ruc, BigDecimal ingreso, TipoBanca tipoBanca, BigDecimal tea,RuleBase ruleBase);

	List<ClienteGeneral> ejecutarDescargaSVSC(RuleBase ruleBase);
	List<FacturacionMasivaCarga> ejecutarDescargaTEA_RAR(RuleBase ruleBase);
	
}
